package com.itheima.wemedia.controller;

import com.baomidou.mybatisplus.extension.api.R;
import com.itheima.wemedia.dto.WmNewsDtoSave;
import com.itheima.wemedia.pojo.WmNews;
import com.itheima.common.vo.ResultVo;
import com.itheima.wemedia.pojo.WmMaterial;
import com.itheima.wemedia.service.WmMaterialService;
import com.itheima.wemedia.service.WmNewsService;
import com.itheima.wemedia.vo.WmNewsVo;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Api("素材查询条件")
public class WemediaFeginController {
    //注入素材的Service对象
    @Autowired
    private WmMaterialService wmMaterialService;
    //注入wmNewsService对象
    @Autowired
    private WmNewsService wmNewsService;

    @GetMapping("/findById/{userId}")
    ResultVo<WmMaterial> findById(@PathVariable Long userId){
        //调用service层的方法进行查询数据库
        WmMaterial byUserId = wmMaterialService.findByUserId(userId);
        return ResultVo.ok(byUserId);
    }

    /**
     * 远程调用添加素材对象到数据库
     * @param wmMaterial 素材对象
     * @return 返回添加结果
     */
    @PostMapping("/add/wmUser")
    ResultVo add(@RequestBody WmMaterial wmMaterial){
        //掉用service层执行添加方法，判断是否添加成功返回相应的参数
        if (wmMaterialService.add(wmMaterial)){
            return ResultVo.ok();
        }
        return ResultVo.error();
    }
    /**
     * 远程调用自媒体微服务，根据文章id查询数据库获取文章对象
     * @param wmNewsId 文章id
     * @return 返回查询到的文章对向
     */
    @GetMapping("/api/wmNews/{wmNewsId}")
    ResultVo<WmNews> findByIdWmNews(@PathVariable Long wmNewsId){
        return ResultVo.ok(wmNewsService.getById(wmNewsId));
    }

    /**
     * 远程调用自媒体微服务，根据id更新文章
     * @param wmNews 更新的文章对象
     * @return 返回更新的结果
     */
    @PostMapping("/api/wmNews/update")
    ResultVo update(@RequestBody WmNews wmNews){
        return ResultVo.ok(wmNewsService.updateById(wmNews));
    }

    /**
     * 查询文章id为8和定时发布时间小于当前时间的所有文章，封装为到wmNewsDtoSave中
     * @param wmNewsDtoSave 分片时可以接收参数，的接口
     * @return 返回查询到的结果进行封装
     */
    @PostMapping("/api/admin/WmNews")
    public ResultVo<List<WmNewsVo>> wmNewsList(@RequestBody WmNewsDtoSave wmNewsDtoSave){
        //调用service进行查询数据
        return ResultVo.ok(wmNewsService.getList(wmNewsDtoSave));
    }

    /**
     * 远程调用更新文章
     * @param wmNews 文章对象
     * @return 。返回是否更新成功
     */
    @PutMapping("/api/admin/update")
    public ResultVo updateWmNews(@RequestBody WmNews wmNews){
        if (wmNewsService.updateWmNews(wmNews)) {
            return ResultVo.ok();
        }
        return ResultVo.error();
    }
}
